package com.gp.testonline.service.impl;


import com.gp.testonline.dao.RoleMapper;
import com.gp.testonline.dao.RppMapper;
import com.gp.testonline.eo.RoleEOPage;
import com.gp.testonline.model.Role;
import com.gp.testonline.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/*
*实现业务及流程接口当中的内容
 */
@Service
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleMapper roleMapper;
    @Autowired
    private RppMapper rppMapper;
    /*
    *角色添加方式实现
    * @param role角色实体
    * @return 是否成功（-1：有重复信息）
     */
    @Override
    public int AddRole(Role role) {
        int returnInt=0;
        /*1 业务判断
        *（1）角色名称不能重复
        */
        //（1）判断角色
        int roleNameCount=roleMapper.getRoleNameCount(role.getRname());
        if (roleNameCount<1) {
            //2 数据添加
            int addRoleInt=roleMapper.insertRole(role);
            //3 返回值设置
            returnInt=addRoleInt;
        }else {
            returnInt=-1; //有相同的角色名称
        }
        return returnInt;
    }

    /**
     * 角色更新
     * @param role 角色实体
     * @return 更新是否成功（-1：更新执行sql报错）
     */
    @Override
    public int UpdateRole(Role role) {
        int isUpdate=0;
        /*1 没有相关业务流程的判断*/
        try{
            isUpdate=roleMapper.updateRole(role);
        }catch (Exception e){
            isUpdate=-1;
            //打印更新时报错的情况
            System.out.println("更新角色信息时执行sql报错的原因为："+e.getMessage());
        }
        return isUpdate;
    }

    /**
     * 角色删除
     * @param rid 角色id
     * @return 删除是否成功（-1：删除执行sql报错）
     */
    @Override
    public int DeleteRole(int rid) {
        int deleteRole=0;
        /*1 有关业务流程的判断*/
        //（1）删除的角色不能与人员角色权限表有关联
        try{
            //返回的结果总数量小于1才可以删除
            if (rppMapper.getRoleCount(rid)<1){
                deleteRole=roleMapper.deleteRole(rid);
            }
        }catch (Exception e){
            deleteRole=-1;
            System.out.println("删除角色信息时执行sql报错，信息为："+e.getMessage());
        }
        return deleteRole;
    }

    @Override
    public List<RoleEOPage> getWhereAll(RoleEOPage roleEOPage) {
        List<RoleEOPage> listRoleEo=roleMapper.getWhereAll(roleEOPage);
        return listRoleEo;
    }
}
